#pragma once
#include <memory>

namespace SOUI
{
#define PURE =0
	struct IRenderObj;
	struct IBrush;
	struct IPen;
	struct IFont;
	struct IBitmap;
	struct IRegion;
	struct IPath;
	struct IPathMeasure;
	struct IRenderTarget;
	struct IRenderFactory;
	struct IPathEffect;
	struct IMaskFilter;

	struct IImgFrame;
	struct IImgX;
	struct IImgDecoderFactory;

	typedef std::shared_ptr<IRenderObj> IRenderObjPtr;
	typedef std::shared_ptr<IBrush> IBrushPtr;
	typedef std::shared_ptr<IPen> IPenPtr;
	typedef std::shared_ptr<IFont> IFontPtr;
	typedef std::shared_ptr<IBitmap> IBitmapPtr;
	typedef std::shared_ptr<IRegion> IRegionPtr;
	typedef std::shared_ptr<IPath> IPathPtr;
	typedef std::shared_ptr<IPathMeasure> IPathMeasurePtr;
	typedef std::shared_ptr<IRenderTarget> IRenderTargetPtr;
	typedef std::shared_ptr<IRenderFactory> IRenderFactoryPtr;
	typedef std::shared_ptr<IPathEffect> IPathEffectPtr;
	typedef std::shared_ptr<IMaskFilter> IMaskFilterPtr;


	typedef std::shared_ptr<IImgFrame> IImgFramePtr;
	typedef std::shared_ptr<IImgX> IImgXPtr;
	typedef std::shared_ptr<IImgDecoderFactory> IImgDecoderFactoryPtr;

}